<?php
 /**
 * Renvoi le LDIF d'une personne
 * @param string $nom Nom de la personne
 * @param string $prenom Prenom de la personne
 * @param string $mel Adresse electronique de la personne
 * @param string $pl Type de passage a la ligne a imposer (1=Unix/Mac Os :\n ou 2=windows \n\r)
 * @return string Chaine contenant le ldif
 */
 Function ldif_personne ($nom, $prenom, $mel, $pl)
  {
   Switch ($pl)
    {
     Default :
      Case 1 : $passage_ligne = "\n" ;
               Break ;
      Case 2 : $passage_ligne = "\r\n" ;
               Break ;
    }
   $chaine = "dn: cn=".$nom." ".$prenom.",mail=".$mel.$passage_ligne ;
   $chaine .= "objectclass: top".$passage_ligne ;
   $chaine .= "objectclass: person".$passage_ligne ;
   $chaine .= "objectclass: organizationalPerson".$passage_ligne ;
   $chaine .= "objectclass: inetOrgPerson".$passage_ligne ;
   $chaine .= "objectclass: mozillaAbPersonAlpha".$passage_ligne ;
   $chaine .= "givenName: ".$prenom.$passage_ligne ;
   $chaine .= "sn: ".$nom.$passage_ligne ;
   $chaine .= "cn: ".$nom." ".$prenom.$passage_ligne ;
   $chaine .= "mail: ".$mel.$passage_ligne ;
   $chaine .= "modifytimestamp: 0Z".$passage_ligne ;
   $chaine .= $passage_ligne ;
   Return $chaine ;
  }
 
 /**
 * Renvoi le LDIF d'un groupe de personne
 * @param string $nom_groupe Nom du groupe
 * @param string $pseudo Pseudo du groupe
 * @param string $description Description du groupe
 * @param array $mel_personnes Tableau contenant tous les mel
 *        format : [0] = Nombre
 *                 pour i allant de 1 a [0]
 *                  [i] = Mel
 * @param string $pl Type de passage a la ligne a imposer (1=Unix/Mac Os :\n ou 2=windows \n\r)
 */
 Function ldif_groupe ($nom_groupe, $pseudo, $description, $mel_personnes, $passage_ligne)
  {
   Switch ($pl)
    {
     Default :
      Case 1 : $passage_ligne = "\n" ;
               Break ;
      Case 2 : $passage_ligne = "\r\n" ;
               Break ;
    }
   $chaine = "dn: cn=".$nom_groupe.$passage_ligne ;
   $chaine .= "objectclass: top".$passage_ligne ;
   $chaine .= "objectclass: groupOfNames".$passage_ligne ;
   $chaine .= "cn: ".$nom_groupe.$passage_ligne ;
   $chaine .= "mozillaNickname: ".$pseudo.$passage_ligne ;
   $chaine .= "description: ".$description.$passage_ligne ;
   For ($i = 1 ; $i <= $mel_personnes [0] ; $i++)
    {
     $chaine .= "member: mail=".$mel_personnes [$i].$passage_ligne ;
    }
   $chaine .= $passage_ligne ;
   Return $chaine ;
  }
 
 /**
 * Genere une liste de diffusion d'une classe
 * @param int $id_classe Identifiant de la classe
 * @param int format Format : 1=Unix,2=windows
 * @return string Liste de diffusion
 */
 Function liste_diffusion_classe ($id_classe, $format)
  {
   Global $id_sql ;
   $chaine = "" ;
   $table_prof [0] = 0 ;
   $profs = SQL_commande ("SELECT DISTINCT u.id_utilisateur,u.nom,u.prenom,u.mel FROM services_prof s,utilisateurs u WHERE s.classe='".$id_classe."' AND s.professeur=u.id_utilisateur", $id_sql) ;
   $nbr_profs = SQL_nbr_lignes ($profs) ;
   For ($i = 0 ; $i < $nbr_profs ; $i++)
    {
     $prof = SQL_ligne_suivante ($profs) ;
     $chaine .= ldif_personne ($prof [1], $prof [2], $prof [3], $format) ;
     $table_prof [0]++ ;
     $table_prof [$table_prof [0]] = $prof [3] ;
    }
   $classe = SQL_commande ("SELECT nom,nom_bref FROM classes WHERE id_classe='".$id_classe."' LIMIT 1", $id_sql) ;
   $nbr = SQL_nbr_lignes ($classe) ;
   If ($nbr == 1)
    {
     $cl = SQL_ligne_suivante ($classe) ;
     $nom_groupe = $cl [0] ;
     $pseudo = $cl [1] ;
     $description = "Equipe pedagogique de la classe de ".$cl [0]." (".$cl [1].")" ;
    }
   Else
    {
     $nom_groupe = "Classe ".$id_classe ;
     $pseudo = "" ;
     $description = "Equipe pedagogique de la classe ".$id_classe ;
    }
   $chaine .= ldif_groupe ($nom_groupe, $pseudo, $description, $table_prof, $format) ;
   Return $chaine ;
  }
 
 /**
 * Genere une liste globale de diffusion
 * @param int format Format : 1=Unix,2=windows
 * @return string Liste de diffusion
 */
 Function liste_diffusion_globale ($format)
  {
   Global $id_sql, $droit_prof ;
   $millesime = millesime (0) ;
   $chaine = "" ;
   // Ensemble des profs
   $profs = SQL_commande ("SELECT DISTINCT id_utilisateur,nom,prenom,mel FROM utilisateurs WHERE droits='".$droit_prof."' AND millesime='".$millesime."' ORDER BY nom,prenom", $id_sql) ;
   $nbr_profs = SQL_nbr_lignes ($profs) ;
   For ($i = 0 ; $i < $nbr_profs ; $i++)
    {
     $prof = SQL_ligne_suivante ($profs) ;
     $chaine .= ldif_personne ($prof [1], $prof [2], $prof [3], $format) ;
    }
   // Ensemble des equipes peda
   $classes = SQL_commande ("SELECT id_classe,nom,nom_bref FROM classes WHERE millesime='".$millesime."' ORDER BY nom_bref,nom", $id_sql) ;
   $nbr_classes = SQL_nbr_lignes ($classes) ;
   For ($i = 0 ; $i < $nbr_classes ; $i++)
    {
     $classe = SQL_ligne_suivante ($classes) ;
     $table_prof [0] = 0 ;
     $profs = SQL_commande ("SELECT DISTINCT u.id_utilisateur,u.nom,u.prenom,u.mel FROM services_prof s,utilisateurs u WHERE s.classe='".$classe [0]."' AND s.professeur=u.id_utilisateur ORDER BY u.nom,u.prenom", $id_sql) ;
     $nbr_profs = SQL_nbr_lignes ($profs) ;
     For ($j = 0 ; $j < $nbr_profs ; $j++)
      {
       $prof = SQL_ligne_suivante ($profs) ;
       $table_prof [0]++ ;
       $table_prof [$table_prof [0]] = $prof [3] ;
      }
     $cl = SQL_ligne_suivante ($classe) ;
     $nom_groupe = $classe [1] ;
     $pseudo = $classe [2] ;
     $description = "Equipe pedagogique de la classe de ".$classe [1]." (".$classe [2].")" ;
     $chaine .= ldif_groupe ($nom_groupe, $pseudo, $description, $table_prof, $format) ;
    }
   Return $chaine ;
  }
 
 /**
 * Genere toutes les listes de diffusion dans un tableau
 * @return array Liste de diffusion
 *         Format : [0][0][0] = Nombre de groupes
 *                  i allant de 1 a [0][0][0]
 *                   [i][0][0] = Id liste
 *                   [i][0][1] = Nom de la liste
 *                   [i][0][2] = Nombre
 *                   j allant de 1 a [i][0][2]
 *                    [i][j][0] = Id utilisateur
 *                    [i][j][1] = Nom
 *                    [i][j][2] = Prenom
 *                    [i][j][3] = Mel
 */
 Function liste_diffusion_globale_tableau ()
  {
   Global $id_sql ;
   $millesime = millesime (0) ;
   $table [0][0][0] = 0 ;
   $chaine = "" ;
   // Ensemble des equipes peda
   $classes = SQL_commande ("SELECT id_classe,nom,nom_bref FROM classes WHERE millesime='".$millesime."' ORDER BY nom_bref,nom", $id_sql) ;
   $nbr_classes = SQL_nbr_lignes ($classes) ;
   For ($i = 0 ; $i < $nbr_classes ; $i++)
    {
     $classe = SQL_ligne_suivante ($classes) ;
     $table [0][0][0]++ ;
     $table [$table [0][0][0]][0][0] = $classe [0] ;
     $table [$table [0][0][0]][0][1] = "(".$classe [2].") ".$classe [1] ;
     $profs = SQL_commande ("SELECT DISTINCT u.id_utilisateur,u.nom,u.prenom,u.mel FROM services_prof s,utilisateurs u WHERE s.classe='".$classe [0]."' AND s.professeur=u.id_utilisateur ORDER BY u.nom,u.prenom", $id_sql) ;
     $table [$table [0][0][0]][0][2] = SQL_nbr_lignes ($profs) ;
     If ($table [$table [0][0][0]][0][2] > 0)
      {
       For ($j = 1 ; $j <= $table [$table [0][0][0]][0][2] ; $j++)
        {
         $prof = SQL_ligne_suivante ($profs) ;
         $table [$table [0][0][0]][$j][0] = $prof [0] ;
	 $table [$table [0][0][0]][$j][1] = $prof [1] ;
	 $table [$table [0][0][0]][$j][2] = $prof [2] ;
	 $table [$table [0][0][0]][$j][3] = $prof [3] ;
	}
      }
    }
   Return $table ;
  }
 
 /**
 * Genere la liste de tous les enseignants avec mel
 * @return array Liste
 *         Format : [0][0] = Nombre d'enseignantss
 *                  pour i allant de 1 a [0][0]
 *                   [i][0] = Id utilisateur
 *                   [i][1] = Nom
 *                   [i][2] = Prenom
 *                   [i][3] = Mel
 */
 Function liste_enseignant_avec_mel ()
  {
   Global $id_sql, $droit_prof ;
   $millesime = millesime (0) ;
   $table [0][0] = 0 ;
   $chaine = "" ;
   $profs = SQL_commande ("SELECT DISTINCT id_utilisateur,nom,prenom,mel FROM utilisateurs WHERE mel!='' AND droits='".$droit_prof."' AND millesime='".$millesime."' ORDER BY nom,prenom", $id_sql) ;
   $table [0][0] = SQL_nbr_lignes ($profs) ;
   If ($table [0][0] > 0)
    {
     For ($j = 1 ; $j <= $table [0][0] ; $j++)
      {
       $prof = SQL_ligne_suivante ($profs) ;
       $table [$j][0] = $prof [0] ;
       $table [$j][1] = $prof [1] ;
       $table [$j][2] = $prof [2] ;
       $table [$j][3] = $prof [3] ;
      }
    }
   Return $table ;
  }
?>